Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

go-algorand 2.6.0-beta #2166

Merged
merged 266 commits into from
May 20, 2021
Merged

go-algorand 2.6.0-beta #2166

merged 266 commits into from
May 20, 2021

Conversation

Algo-devops-service
Copy link
Contributor

@Algo-devops-service Algo-devops-service commented May 19, 2021

GitHub Logo

Highlights

  • Increased Test Coverage: including adding NFT support for pingpong
  • Logging: reduced verbosity
  • TEAL: TEAL 3 Refactoring and new features in tealdbg
  • Catchup and Catchpoint enhancements
  • BugFixes: Update.sh script, GOPROXY, REST API, Nil Check, KMD for Windows, netgoal

Changelog

  1. General/Other

    • New Feature
      • Add support for Arch Linux
    • Enhancement
      • Expand /metrics to show per-message-tag stats on number of messages and amount of bytes moved.
      • Cache docker images in Travis and re-load them
      • Copy database files generation in create_and_deploy_recipe.sh to nodes
      • Improve handling of ledger falling behind agreement
      • Report algod panic in algoh
      • BlockService will redirect when it does not have the round
      • Efficiency Improvement: Avoid compact cert validation on non-validate/non-generate path
    • BugFix
      • Fix bug with updater not restarting services with systemctl
      • Update GOPROXY: Deal with deprecated gocenter.io GOPROXY
      • Pipeline - don't reset CHANNEL if defined
      • skip printing the logs when program is in terminated state.
      • nil check fix
      • Push docker tag to betanet
      • Fix requestNonce alignment on arm32
      • rollback config v17 into v16
      • Fixes for KMD on Windows
  2. Teal

    • New Feature
      • vFuture: dynamic opcode accounting, jumpsub/retsub, backward jump support
    • Enhancement
      • Cleanup and re-factor of TEAL 3 code
      • adding extra docs for pushbytes and pushint
    • Tealdbg:
      • Check compile and dryrun programs against consensus limits
      • Better support for TEAL 3 in tealdbg
      • Allow tealdbg to listen on specified address
      • Removes program version assumption
  3. REST API

    • Bug Fix
      • Add swagger response annotations so a valid swagger doc gets generated
      • Fix parameter check in abort procedure
      • Fixes for pending transaction endpoint
      • Return an empty string instead of null when making a proof for transaction with no siblings.
  4. Tests

    • Enhancement
      • algofix - Allow struct field to be sync.Mutex if tagged algofix:"allow sync.Mutex"
      • Add DisableLocalhostConnectionRateLimit configuration option
      • Fix/improve kmd speed in test
      • Add pingpong mode to create NFTs for testing
      • script to watch algod heap
      • Improve TestCompactCerts error testing
      • Bandwidth watch
      • Unit test demonstrating high memory consumption
      • Catchup: Add deep block validation support
      • Add performance metrics for account updates
      • Add tests for ledger/compactcert.go
      • test coverage for ledger/eval.go funcs
      • Filter out verbosed output from automated testing
    • Bug Fix
      • Fix parameter check in abort procedure
      • Fix testing bug : avoid datarace on a node crash during e2e test
      • logfilter: exit with non-zero when test fails
      • Node Controller: delete pid file on killing process
      • Fix node shutdown on the wrong node directory
  5. Catchup and Catchpoint

    • Enhancement
      • Support for catching up from http or ws fetchers
      • Reduce memory utilization during accounts update init by reconstructing balances db from blocks
      • Extend catchpointdump utility to verify merkle trie
      • Fine tune catchup peer selection logic
      • Add cross-verify for genesis.json hash
    • Bug Fix
      • catchpoint: truncate output file
  6. Ledger

    • Enhancement
      • Preload account data in parallel on the evaluator
      • Improve ConsensusVersion error messages
      • Disable minimum balance check when not validating or generating
      • Split committed round range by consensus protocol version
    • Bug Fix
      • Fix consensus version to flush correctly
  7. Network

    • Enhancement
      • Improve ConsensusVersion error messages
      • Add peer functions to network interface to associate data with a peer to be garbage collected when peer goes away
      • Add networking infrastructure for cancelling sends
  8. Goal

    • Enhancement
      • Add comments to disassembly of constant load lines to show constant
      • add support for a single node private network
      • Improve waitForCommit logic
      • Refactor waitForCommit
    • Bug Fix
      • Fix goal node restart message when node already started
  9. Transactions

    • Enhancement
      • Transaction Sync: Optimize bloom filter memory allocations
    • Bug Fix
      • txpool: Fix incorrect datatype checking in recomputeBlockEvaluator
  10. Logger

    • Enhancement
      • Make deadlockLogger thread-safe
      • Reduce verbosity of logged messages
      • Print out intermediate decoding errors
      • logfilter: provide proper handling for panicking unit tests
    • Bug Fix
      • logfilter bug when running test without -v
  11. netgoal

    • Enhancement
      • Add pre-generated network support
    • Bug Fix
      • Fix insufficient account with preloaded db files
      • Resolve netgoal errors when bootstrap files are missing
      • Fixup small amounts of float64 roundoff
  12. Participation Keys

    • Enhancement
      • Refactor participation keys management
      • Add support for overlapping participation keys
      • Ensure the participation key database is being correctly closed after being installed
      • Add ParticipationKeysRefreshInterval to the node config

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

Test Plan

Standard release testing.

Verify reduced memory usage in higher traffic round processing.

tsachiherman and others added 30 commits February 26, 2021 16:53
* TagCounter for recording stats about network tags
Modify the `eval()` to load the account data before the evaluation of each transaction group.
tsachiherman and others added 17 commits May 5, 2021 19:24
netgoal was failing to build network when the bootstrap files was missing.
The logfilter utility was not handling unit test panics correctly - the panic result was omitted from the output.
Improve the support for overlapping participation keys, and correct the participation key uniqueness.

Highlights:
* Keys used to be identified by account public address, first and last valid round. This wasn't that great. If you were to generate multiple participation keys for the same account, you could easily have few of them share the same parameters - making the algod vote with only one of them ( arbitrarily ).
* When sending the votes, we were attempting to send the votes for all the participation keys that we had. If we had two participation keys valid with an overlapping range, we would vote for both of them ( and for the same account! ). This would not generate an issue on it's own, as we had a proper checking for the Vote and Selection keys on the verification side, but could lead to a malicious-like notifications in the log file.
* Similar to the above, a newly added participation key would be used to vote right away, even before the 320 rounds have passed. This would cause the network to reject this vote.

In this PR, I have changed the following:
1. `HasLiveKeys` - was removed. The method was not used anywhere in the codebase.
2. `Keys` was added a round number. This round number would be used for filtering a participation key that has the given round number between its first and last valid range.
3. The agreement `asyncPseudonode` would now cache the participation keys for a single round. This optimization wasn't done in a vacuum. The need for this came since we would add a database lookup for each account prior to returning the corresponding participation key.
4. The agreement now expect the `KeyManager` to have the `VotingKeys` method instead of the `Keys` method. This allow us to customize the node to provide a database lookup and ensure the voting keys available for the node are the one that would be accepted by the network.
Add unit tests to ledger/compactcert
Previous PRs were advancing the config version from v16 to v17 needlessly.
( i.e. needlessly since the rel/beta is currently at v15 )

This PR merges back the changes from v17 into v16, and removes v17.
Test coverage for some functions in ledger/eval.go
`scripts/configure_dev.sh` can now install dependencies for Arch Linux.
When the recomputeBlockEvaluator runs, it tests all the pending transactions against the ledger to detect duplicate transactions ( which happen all the time; these aren't an issue ).
The block evaluator reports the error by returning `*ledgercore.TransactionInLedgerError` and not `ledgercore.TransactionInLedgerError` as the code was testing against.
Add support for dynamic TEAL.
…#2137)

The existing key registration transaction verification allows quite much flexibility on what is written to the account data.
This PR adds few more constraints and would allow us to make certain assumptions regarding future key registration transactions.
…ction with no siblings. (#2152)

A nil array is serialized to null which looks strange in the API response. Initialize to an empty array.
…ng (#2149)

ledger: disable minimum balance check when not validating or generating
A change in 2.5.4 broke the upgrade behavior. When a node is upgraded with the new scripts, then algod -v updates, but the node doesn't update properly when you check curl the /versions endpoint.
@algobarb algobarb self-assigned this May 20, 2021
@onetechnical onetechnical requested a review from tsachiherman May 20, 2021 01:57
@algobarb algobarb marked this pull request as ready for review May 20, 2021 13:18
@bricerisingalgorand
Copy link
Contributor

It looks like Pipeline - don't reset CHANNEL if defined is there twice under general bugfixes

@algobarb
Copy link
Contributor

It looks like Pipeline - don't reset CHANNEL if defined is there twice under general bugfixes

Thanks for catching it. Will update.

@algojohnlee algojohnlee merged commit 34f7106 into algorand:rel/beta May 20, 2021
tsachiherman pushed a commit to tsachiherman/go-algorand that referenced this pull request Jul 7, 2021
PhearZero pushed a commit to PhearNet/crypto that referenced this pull request Jan 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.